热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道
编译:代码卫士
数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
热门npm 库 “coa” 被劫持并被注入恶意代码,影响全球所有的 React 管道。“coa” 库的全称是 ”命令-选项-参数“,每周的下载量约为900万次,用于 GitHub 上近500万个开源库中。几小时后,另外一个常用的npm组件 “rc” 也遭劫持,”rc”库的每周下载量达到1400万次。
恶意代码被注入 “coa” 发布
今天,全球所有的开发人员都会吃惊:npm 库 “coa” 竟然发布了新版本,要知道这个项目已经有数年没有人动过,今天突然出现在npm库中。“coa” 是 Node.js 项目的命令行选项解析器。该项目的最新稳定版 2.0.2 在2018年12月发布。但就在几个小时前,npm 上出现了可疑版本 2.0.3、2.0.4、2.1.1、2.1.3和3.1.3,导致依赖于 “coa” 库的 React 程序包崩溃。
一名 React 开发人员 Roberto Wesley Overdijk 指出,”我不确定发生了什么,但10分钟前发现一个发布版本(尽管GitHub 上的最后一次更新是在2018年)。这个发布版本导致互联网崩溃。“另外一名昵称为 ElBidouilleur 的GitHub 用户发现其中一个 “coa” 版本2.1.3 使其build 崩溃:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! coa@2.1.3 preinstall: start /B node compile.js & node compile.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the coa@2.1.3 preinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/mboutin/.npm/_logs/2021-11-04T14_01_45_544Z-debug.log
多名开发人员加入讨论,证实了自己在 “coa” 新版本发布后,build 出现各种问题。
不久后另外一个热门的npm库 “rc” 也被劫持,npm 中出现了恶意版本1.2.9、1.3.9和2.3.9。
恶意软件类似于被黑的 “ua-parser-js” 和虚假 Noblox 包
上个月,另外一个流行的热门 npm 库 “ua-parser-js” 被黑。该库用于 Facebook、微软、亚马逊、Reddit 和其它科技巨头。
据 Bleeping Computer 分析,被黑的 “coa” 版本中所含的恶意软件和被劫持的 “ua-parser-js” 版本中的代码十分相似,可能说明这两起事件背后的威胁行动者之间存在关联。
分析指出,被黑的 “coa” 版本 2.0.3、2.1.3和其它版本中仅包含可疑的 preinstall 脚本:
"preinstall": "start /B node compile.js & node compile.js"
但从2.0.4版本中才发现完整的恶意代码。预装脚本引用的 “compile.js” 在 coa:2.0.4中存在并运行。“compile.js” 文件中包含混淆的 JavaScript 代码。
该 JavaScript 文件之后启动 Batch 文件,即 “coa” npm 文档中包含的 “compile.bat”。该 Batch 脚本虽然未再次混淆,但在上周发现的虚假 Noblox npm typosquat 中,它将在受感染机器上安装勒索软件和凭据窃取工具。它应用的是混淆的“变量扩展“概念。
该 Batch 文件下载并运行 pastorcryptograph[.]at 的 “sdd.dll”,它和被劫持的 “ua-parser-js” 版本时访的 “sdd.dll” 并不相似。而”rc”恶意版本释放的 “sdd.dll” 和这两个从校验和角度来看又有所不同。但所有的DLLs都植入了相同的恶意软件。
如下是未混淆的 Batch 文件。
从现有的分析和信息来看,该恶意软件很可能是 Windows 版本的 Danabot 密码窃取木马。通过 regsvr32.exe 加载时,它最终会再次使用具有多种参数的 rundll32.exe 启动来执行不同的恶意行为。
加载时,Danabot 将执行多种恶意活动,包括:
从多种 web 浏览器中窃取木马,包括 Chrome、Firefox、Opera、IE 和 Safari。
从多款应用中窃取木马,包括VNC、在线赌博应用、FTP客户端和邮件账户
窃取存储的信用卡
截取活跃屏幕
记录键击
所有被盗数据之后被发送回给威胁行动者,从而攻陷受害者的其它账户。
COA 用户如何应对?
鉴于该供应链攻击的影响广泛,强烈建议所有的 “coa” 库和 “rc” 库用户检查自己的项目中是否存在恶意软件,如检查是否存在 compile.js、compile.bat、sdd.dll,如存在则删除。
由于该 “sdd.dll” 变体在 VirusTotal 中被检测为木马,而 “ua-parser-js” 释放的时凭据窃取工具,因此受感染用户应当假定自己的设备已被完全攻陷并更改密码、密钥并刷新令牌,因为它们可能遭攻陷并被发送回给威胁行动者。
Overdijk 表示,”NPM 已删除被攻陷版本,如我理解正确,应该拦截了临时发布的新版本,同时恢复了对该软件包的访问权限。由于已删除受影响版本,因此无需任何修复方案。“他表示,以防万一,建议仅使用2.0.2稳定版,直到问题完全解决。
对于“rc”库而言,安全版本是1.2.8。npm 项目组表示,”从调查结果来看,我们实时发现了包含类似于’coa’程序包中恶意软件的 ‘rc’ 程序包。’rc’恶意版本立即从注册表中删除,我们已发布安全公告“。
Npm 表示该事件是由失陷的某 npm 账户造成的,建议npm维护人员使用双因素认证,阻止此类攻击。
流行的 NPM 包依赖关系中存在远程代码执行缺陷
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件
微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析
速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年
SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制
找到软件供应链的薄弱链条
GitHub谈软件供应链安全及其重要性
揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司开源软件漏洞安全风险分析
开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析
集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市
热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码
GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥
因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露
彪马PUMA源代码被盗,称客户数据不受影响
https://www.bleepingcomputer.com/news/security/popular-coa-npm-library-hijacked-to-steal-user-passwords/
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。